# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2025/9/22 11:34
# @Author  : Dell
# @File    : vectorstore.py
# @Software: PyCharm
# @Desc    :向量存储
"""
Vector Store通常遵循一个标准化流程
加载文档：使用 DocumentLoader（如 PyPDFLoader）加载原始文件
分割文本：使用 TextSplitter将长文档切分成较小的文本块（Chunks）
生成嵌入：选择并初始化一个嵌入模型（如 OpenAIEmbeddings, HuggingFaceEmbeddings）
构建向量库：使用 VectorStore.from_documents(docs, embeddings)方法生成并存储向量
检索：调用 similarity_search(query)方法获取相关结果
"""

from langchain_community.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter  # 这个可能还在原位置
from langchain_community.embeddings import DashScopeEmbeddings # 使用阿里云的向量模型

#-------------------准备工作开始#-------------------
# 加载文档
loader = TextLoader("xiyouji.txt",encoding="utf-8")
document = loader.load()
# 方法1：处理单个文档内容
text_splitter=RecursiveCharacterTextSplitter(chunk_size=500,chunk_overlap=20)
texts = text_splitter.split_documents(document)
print(f"分割为 {len(texts)} 个文本块")
# 嵌入模型
embeddings = DashScopeEmbeddings(model='text-embedding-v1',dashscope_api_key="sk-7b4f290b1a3e42a1a9a1957fa44eff37")
embedding_list = embeddings.embed_documents([text.page_content for text in texts])
print(f"你有{len(embedding_list)}嵌入")
print(f"第一个文本转换成向量，向量的维度（长度）：{len(embedding_list[0])}")
print(f"展示第一个文本转成向量后前3个数值：{embedding_list[0][:3]}个数值")